package com.yigerende.service;


import com.yigerende.model.Blog;
import com.yigerende.vo.BlogQuery;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/*
* 关于所有博客页面
* */
public interface BlogService {


    //显示所有博客(通过id查询博客)
    public Blog getBlog(Long id);

    //通过文本转换html的方式显示
    public Blog getAndConvert(Long id);

    //分页查询(传递一个分页对象，还要传递一个博客对象用来选择性查询)
    public Page<Blog> listBlog(Pageable pageable, BlogQuery blog);

    //新增博客(传递用户输入的博客，从数据库查询到返回博客)
    public Blog saveBlog(Blog blog);

    //修改博客名称(通过id修改博客)
    public Blog updateBlog(Long id,Blog blog);

    //删除博客(通过id来删除博客)
    public void deleteBlog(Long id);

    //所有数据
    public List<Blog> listBlog();


    //标签查询显示
    public Page<Blog> listBlog(Long tagId,Pageable pageable);





    /*上面是管理页面的，下面是用户显示页*/

    //分页查询所有博客
    public Page<Blog> listBlog(Pageable pageable);

    //最新推荐显示
    public List<Blog> listRecommendBlogTop(Integer size);

    //全局搜索
    public Page<Blog> listBlog(String query,Pageable pageable);

    //归档（对应年份查询，这种用map对应的年份最好）,所欲数据都归档，不用传递参数
   public Map<String,List<Blog>> archiveBlog();
   //归档后的条数
    public Long countBlog();


}
